package Day_0130;

/**
 * @author zxc
 * @date 2023/01/30 21:22
 **/
public class ExceptionAndError {
    public static void main(String[] args) {
        /**
         * Exception && Error 共同父类为 Throwable;
         * Java可抛出(Throwable)的结构分为三种类型：
         * 1.Exception
         * a.被检查的异常(CheckedException);
         * 概念 ：Exception类本身，以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。(Java编译器会去检查，编译时就报错)
         * （1）此类异常，要么通过throws进行声明抛出;
         * （2）通过try-catch进行捕获处理;
         *
         * b.运行时异常(RuntimeException);
         * 概念 ：RuntimeException及其子类都被称为运行时异常。（Java编译器不会去检查，编译时通过，运行时报错;）
         * 常见的五种运行时异常：
         * （1）ClassCastException（类转换异常）
         * （2）IndexOutOfBoundsException（数组越界）
         * （3）NullPointerException（空指针异常）
         * （4）ArrayStoreException（数据存储异常，操作数组是类型不一致）
         * （5）BufferOverflowException
         *
         * 2.错误(Error)
         * 概念 ：Error类及其子类;
         * （特点 ： 和运行时异常一样，编译器也不会对错误进行检查。）
         * ===》
         * 当资源不足、约束失败、或是其它程序无法继续运行的条件发生时，就产生错误。程序本身无法修复这些错误的。
         * 例如，VirtualMachineError就属于错误。出现这种错误会导致程序终止运行。OutOfMemoryError、ThreadDeath。
         */
    }
}
